SQlite源码分析

OP_NotExists

下图是OP_NotExists的内容:

case OP_NotExists : {
    VdbeCursor *pC = p->apCsr[pOp->p1];
    BtCursor *pCrsr = pC->pCursor;
    res = 0;
      iKey = pIn3->u.i;//iKey为1
    sqlite3BtreeMovetoUnpacked(pCrsr, 0, iKey, 0, &res);
    pC->seekResult = res;
}

OP_NotExists操作符根据sqlite3BtreeMovetoUnpacked函数执行的结果来确定是否之后或者之前还有操 作码,有的话res为0,所以可以继续执行下去,不用跳转到p2指向的操作码去。pc加1为18,下一个要执行的是aOp[18] OP_Rowid。